package controllers

import (
	"WDserver/config"
	"WDserver/models"
	"WDserver/util"
	"fmt"
	"net"
	"strings"
)


func handleConnection(conn net.Conn) {
	buffer := make([]byte, 4096) //建立一个slice
	for {
		n, err := conn.Read(buffer) //读取客户端传来的内容
		if err != nil {
			//util.Log(conn.RemoteAddr().String(), "客户端断开连接: ", err)
			return //当远程客户端连接发生错误（断开）后，终止此协程。
		}
		if len(buffer[:n]) <= 4 {
			util.Log(conn.RemoteAddr().String(), "非法连接！")
			return
		}
		str := strings.Split(util.EecodeBytes(buffer[:n]), "|") //切割数据
		switch str[0] {
		case "config":
			conn.Write(util.EncodeString("config|" + config.Config().Gg + "|" + config.Config().Version + "|" + config.Config().Gname + "|" + config.Config().QdStart + "|" + config.Config().Gd + "|" + config.Config().Qq + "|" + config.Config().Cz))
		case "reg":
			if config.Config().RegStart == false {
				conn.Write(util.EncodeString("msg|注册功能暂时关闭！请联系管理员！"))

			}else{
				ip := strings.Split(conn.RemoteAddr().String(), ":")
				if models.LockIP(ip[0]) == true {
					conn.Write(util.EncodeString("msg|抱歉！你因注册次数过多，已被限制注册！"))
				}else {
					conn.Write(util.EncodeString(models.InstallUser(str[1], str[2], str[3], ip[0])))
				}
			}

		case "change":
			if config.Config().ModifyStart == false {
				conn.Write(util.EncodeString("msg|修改密码功能暂时关闭！请联系管理员！"))
			}else {
				conn.Write(util.EncodeString(models.UpdateUser(str[1], str[2], str[3])))
			}

		case "cdk":
			if config.Config().CdkStart == false {
				conn.Write(util.EncodeString("msg|泡点兑换功能暂时关闭！请联系管理员！"))

			}else {
				conn.Write(util.EncodeString(models.UpdateCDK(str[1], str[2])))
			}

		default:
			fmt.Println("错误！")

			}
	}
}